﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using gestionClinica.conexion;
using System.Data;
using MySql.Data.MySqlClient;

namespace gestionClinica.Gestion_DB
{
    public class gestion
    {
        private Conexion conex = new Conexion();

        public string insertarDoctor(string rut, string nombre, string especialidad) 
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                try
                {
                    MySqlDataAdapter da = new MySqlDataAdapter();
                    string sql = "insert into doctor(rut_doctor,nombre_doctor,especialidad)";
                    sql += "values(@ru,@nom,@esp)";
                    da.InsertCommand = new MySqlCommand(sql, conex.Conn);
                    da.InsertCommand.Parameters.AddWithValue("@ru", rut);
                    da.InsertCommand.Parameters.AddWithValue("@nom", nombre);
                    da.InsertCommand.Parameters.AddWithValue("@esp", especialidad);
                    int i = da.InsertCommand.ExecuteNonQuery();
                    conex.desconectar();
                    return "doctor ingresado correctamente";

                }
                catch (MySqlException e)
                {
                    conex.desconectar();                
                    return "Doctor ya Registrado";
                }
            }else{

                return result;
            }        
        }

        public string insertarPaciente(string rut, string nombre, int edad)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                try
                {
                    MySqlDataAdapter da = new MySqlDataAdapter();
                    string sql = "insert into paciente(rut_paciente,nombre_paciente,edad_paciente)";
                    sql += "values(@ru,@nom,@ed)";
                    da.InsertCommand = new MySqlCommand(sql, conex.Conn);
                    da.InsertCommand.Parameters.AddWithValue("@ru", rut);
                    da.InsertCommand.Parameters.AddWithValue("@nom", nombre);
                    da.InsertCommand.Parameters.AddWithValue("@ed", edad);
                    int i = da.InsertCommand.ExecuteNonQuery();
                    conex.desconectar();
                    return "Paciente ingresado correctamente";

                }
                catch (MySqlException e)
                {
                    conex.desconectar();
                    return "Paciente ya Registrado";
                }
            }
            else
            {

                return result;
            }
        }

        public string insertarPacienteUnidad(string rut, int idUnidad, string fecha)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                try
                {
                    MySqlDataAdapter da = new MySqlDataAdapter();
                    string sql = "insert into unidad_paciente(rut_paciente,id_unidad,fecha) ";
                    sql += "values (@ru,@id,@fec)";
                    da.InsertCommand = new MySqlCommand(sql, conex.Conn);
                    da.InsertCommand.Parameters.AddWithValue("@ru", rut);
                    da.InsertCommand.Parameters.AddWithValue("@id", idUnidad);
                    da.InsertCommand.Parameters.AddWithValue("@fec", fecha);
                    int i = da.InsertCommand.ExecuteNonQuery();
                    conex.desconectar();
                    return "Paciente ingresado correctamente a la Unidad";

                }
                catch (MySqlException e)
                {
                    return e.Message;
                }
            }
            else
            {

                return result;
            }
        }



        public string cambiarResponsable(int id_unidad, string rut) 
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                MySqlDataAdapter da = new MySqlDataAdapter();
                string sql = "update unidad set rut_doctor=@ru where id_unidad=@id";
                da.UpdateCommand = new MySqlCommand(sql, conex.Conn);
                da.UpdateCommand.Parameters.AddWithValue("@id", id_unidad);
                da.UpdateCommand.Parameters.AddWithValue("@ru", rut);
                int i = da.UpdateCommand.ExecuteNonQuery();
                conex.desconectar();
                return "Responsable cambiado exitosamente";

            }
            else 
            {
                return result;
            }
        }

        public string insertarAtencion(string rutDoctor, string rutPaciente, string sintoma, string fecha)        
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                try
                {
                    MySqlDataAdapter da = new MySqlDataAdapter();
                    string sql = "insert into doctor_paciente(rut_doctor,rut_paciente,sintoma,tratamiento,fecha) values (@rud,@rup,@sin,@tra,@fec)";
                    da.InsertCommand = new MySqlCommand(sql, conex.Conn);
                    da.InsertCommand.Parameters.AddWithValue("@rud", rutDoctor);
                    da.InsertCommand.Parameters.AddWithValue("@rup", rutPaciente);
                    da.InsertCommand.Parameters.AddWithValue("@sin", sintoma);
                    da.InsertCommand.Parameters.AddWithValue("@tra", "Sin Tratamiento");
                    da.InsertCommand.Parameters.AddWithValue("@fec", fecha);
                    int i = da.InsertCommand.ExecuteNonQuery();
                    conex.desconectar();
                    return "Datos ingresado correctamente";

                }
                catch (MySqlException e)
                {
                    
                    return e.Message;
                }

            }
            else {

                return result;
            }
        
        }

        public DataSet getDoctorUnidad() 
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select unidad.id_unidad, unidad.nombre_unidad, unidad.planta, doctor.nombre_doctor, doctor.especialidad from doctor,unidad";
                sql += " where doctor.rut_doctor=unidad.rut_doctor";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds,"UnidadDoctores");               
                conex.desconectar();
                return ds;
            }
            else {

                return null;
            }        
        }

        public DataSet getDoctores() 
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from doctor";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds,"doctores");
                conex.desconectar();
                return ds;

            }
            else 
            {
                return null;
            }
        }

        public DataSet getPacientes()
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from paciente";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "pacientes");
                conex.desconectar();
                return ds;
            }
            else
            {
                return null;
            }
        }

        public DataSet getUnidades()
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from unidad";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "unidades");
                conex.desconectar();
                return ds;

            }
            else
            {
                return null;
            }
        }

        public DataSet gePacientesUnidad() 
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select unidad.id_unidad, unidad.nombre_unidad, unidad.planta, paciente.rut_paciente, paciente.nombre_paciente, unidad_paciente.fecha ";
                sql += "from paciente,unidad,unidad_paciente where ";
                sql+="paciente.rut_paciente=unidad_paciente.rut_paciente and unidad.id_unidad=unidad_paciente.id_unidad";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "pacienteUnidad");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }   
        
        }

        public DataSet getDoctorUnidadLike(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select unidad.id_unidad, unidad.nombre_unidad, unidad.planta, doctor.nombre_doctor, doctor.especialidad from doctor,unidad";
                sql += " where doctor.rut_doctor=unidad.rut_doctor and unidad.nombre_unidad like @nom";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@nom", "%"+texto+"%");
                DataSet ds = new DataSet();
                da.Fill(ds, "UnidadDoctores");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }
        }

        public DataSet getPacienteslike(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from paciente where rut_paciente like @rut";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@rut", "%"+ texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "pacientes");                
                conex.desconectar();
                return ds;
            }
            else
            {
                return null;
            }
        }
        public DataSet getDoctoreslike(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from doctor WHERE especialidad like @es";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@es", "%" + texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "doctores");
                conex.desconectar();
                return ds;

            }
            else
            {
                return null;
            }
        }
        public DataSet getDoctoreslike2(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from doctor WHERE nombre_doctor like @es";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@es", "%" + texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "doctores");
                conex.desconectar();
                return ds;

            }
            else
            {
                return null;
            }
        }

        public DataSet getHistorialDoctores()
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select distinct d.nombre_doctor, d.rut_doctor, d.especialidad, p.nombre_paciente, dp.tratamiento, u.nombre_unidad, dp.fecha ";
                sql+="from doctor as d, doctor_paciente as dp, paciente as p, unidad as u, unidad_paciente as up ";
                sql+="where d.rut_doctor = dp.rut_doctor and dp.rut_paciente=p.rut_paciente and p.rut_paciente=up.rut_paciente and up.id_unidad=u.id_unidad ";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "historialDoctor");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }

        }
        public DataSet getHistorialPaciente()
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select distinct p.nombre_paciente, p.rut_paciente, p.edad_paciente, dp.sintoma, u.nombre_unidad, up.fecha, d.nombre_doctor ";
                sql+="from doctor as d, doctor_paciente as dp, paciente as p, unidad as u, unidad_paciente as up ";
                sql+="where d.rut_doctor = dp.rut_doctor and dp.rut_paciente=p.rut_paciente and p.rut_paciente=up.rut_paciente and up.id_unidad=u.id_unidad ";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "historialPaciente");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }

        }
        public DataSet getHistorialDoctoresLike(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select distinct d.nombre_doctor, d.rut_doctor, d.especialidad, p.nombre_paciente, dp.tratamiento, u.nombre_unidad, dp.fecha ";
                sql += "from doctor as d, doctor_paciente as dp, paciente as p, unidad as u, unidad_paciente as up ";
                sql += "where d.rut_doctor = dp.rut_doctor and dp.rut_paciente=p.rut_paciente and p.rut_paciente=up.rut_paciente and up.id_unidad=u.id_unidad ";
                sql += " and d.nombre_doctor like @nom";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@nom", "%" + texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "historialDoctor");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }

        }
        public DataSet getHistorialPacienteLike(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select distinct p.nombre_paciente, p.rut_paciente, p.edad_paciente, dp.sintoma, u.nombre_unidad, up.fecha, d.nombre_doctor ";
                sql += "from doctor as d, doctor_paciente as dp, paciente as p, unidad as u, unidad_paciente as up ";
                sql += "where d.rut_doctor = dp.rut_doctor and dp.rut_paciente=p.rut_paciente and p.rut_paciente=up.rut_paciente and up.id_unidad=u.id_unidad ";
                sql += " and p.nombre_paciente like @nom";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@nom", "%" + texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "historialPaciente");
                conex.desconectar();
                return ds;
            }
            else
            {

                return null;
            }

        }

        public string actualizarTratamiento(string tratamiento, int id)
        {
            conex.conectar();
            string sql = "update doctor_paciente set tratamiento = @tra where id_d_p = @id";
            MySqlDataAdapter da = new MySqlDataAdapter();
            da.UpdateCommand = new MySqlCommand(sql, conex.Conn);
            da.UpdateCommand.Parameters.AddWithValue("@tra", tratamiento);
            da.UpdateCommand.Parameters.AddWithValue("@id", id);
            int i = da.UpdateCommand.ExecuteNonQuery();
            conex.desconectar();
            return "Tratamiento Ingresado";

        }


        public DataSet getDoctor_paciente(string texto)
        {
            string result = conex.conectar();
            if (result.Equals("ok"))
            {
                string sql = "select * from doctor_paciente where rut_doctor like @rut";
                MySqlDataAdapter da = new MySqlDataAdapter(sql, conex.Conn);
                da.SelectCommand.Parameters.AddWithValue("@rut", "%" + texto + "%");
                DataSet ds = new DataSet();
                da.Fill(ds, "doctorPaciente");
                conex.desconectar();
                return ds;

            }
            else
            {
                return null;
            }
        }
        

        
        




    }
}
